///:SqlSession.java
package cn.weyoungstudio.hwes.jdbc.session;

import cn.weyoungstudio.hwes.jdbc.common.SQLParameter;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
 * @author icechen1219
 * @date 2020/05/22
 */
public interface SqlSession {
    Transaction openTransaction();

    /**
     * 数据库更改辅助方法，返回受影响的记录的行数，适用于：插入、修改、删除
     *
     * @param sql
     * @param params
     * @return 受影响的行数
     * @throws SQLException
     */
    int executeUpdate(String sql, List<SQLParameter> params) throws SQLException;

    /**
     * 数据库更改辅助方法，返回自动生成键的值，适用于：主键为自增长整型的表
     *
     * @param sql
     * @param params
     * @param needKeys
     * @return 返回生成的主键或受影响的行数
     * @throws SQLException
     */
    Integer executeUpdate(String sql, List<SQLParameter> params, boolean needKeys) throws SQLException;

    /**
     * 数据库查询辅助方法，返回一个集合
     *
     * @param sql
     * @param params
     * @return
     * @throws SQLException
     */
    List<Map<String, Object>> find(String sql, List<SQLParameter> params) throws SQLException;

    /**
     * 查询唯一记录，返回对应的pojo
     *
     * @param obj
     * @return
     */
    <E> E selectOne(E obj);
}
///:SqlSession.java
